iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0
AI & Data

30天帶你從零基礎到Python爬蟲系列 第 26

[Day26] Pandas實戰演練 - 政府開放資料

  • 分享至 

  • xImage
  •  

今天不是爬蟲的實戰,今天是要來使用Pandas套件,示範的檔案是來自政府資料開放平台裡就醫中的台灣COVID-19冠狀病毒檢測每日送驗數,可以直接下載CSV格式的檔案。

裡面的資料長這樣~

通報日,法定傳染病通報,居家檢疫送驗,擴大監測送驗,Total
2020/1/15,0.0,0.0,0.0,0.0
2020/1/16,4.0,0.0,0.0,4.0
2020/1/17,0.0,0.0,0.0,0.0
2020/1/18,1.0,0.0,0.0,1.0
...

載入及輸出資料

接下來要把它載入,就可以輸出你需要的內部資料了。

import pandas as pd

df = pd.read_csv("covid19_tw_specimen.csv", encoding = "utf-8")
print(df.info())  # 欄位資料型別等資訊
print("-"*30)
print(df.describe())  # 統計資訊
print("-"*30)
print(df.head())  # 前五筆資料
print("-"*30)
print(df.tail())  # 最後五筆資料

head()和tail()的預設都是輸出五筆資料,如果你想要自訂輸出的數量,就在括號內寫下數字就好了。輸出結果如下,不過我覺得可能是環境的問題,它長得好醜,最上面的字沒有對齊,用jupyter notebook的話好像會直接出現表格,會好看很多~

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 979 entries, 0 to 978
Data columns (total 5 columns):
 #   Column   Non-Null Count  Dtype  
---  ------   --------------  -----  
 0   通報日      979 non-null    object 
 1   法定傳染病通報  979 non-null    float64
 2   居家檢疫送驗   979 non-null    float64
 3   擴大監測送驗   979 non-null    float64
 4   Total    979 non-null    float64
dtypes: float64(4), object(1)
memory usage: 38.4+ KB
None
------------------------------
            法定傳染病通報      居家檢疫送驗        擴大監測送驗          Total
count    979.000000  979.000000    979.000000     979.000000
mean    6166.978550    1.743616  11367.575077   17536.297242
std    16663.322277   12.474458  12583.988198   23458.609351
min        0.000000    0.000000      0.000000       0.000000
25%       27.000000    0.000000    267.000000     299.500000
50%       67.000000    0.000000   7939.000000    8395.000000
75%      263.000000    0.000000  20384.500000   25789.000000
max    93451.000000  166.000000  61837.000000  117341.000000
------------------------------
         通報日  法定傳染病通報  居家檢疫送驗  擴大監測送驗  Total
0  2020/1/15      0.0     0.0     0.0    0.0
1  2020/1/16      4.0     0.0     0.0    4.0
2  2020/1/17      0.0     0.0     0.0    0.0
3  2020/1/18      1.0     0.0     0.0    1.0
4  2020/1/19      1.0     0.0     0.0    1.0
------------------------------
           通報日  法定傳染病通報  居家檢疫送驗   擴大監測送驗    Total
974  2022/9/15  41675.0     0.0  18047.0  59722.0
975  2022/9/16  39656.0     0.0  16634.0  56290.0
976  2022/9/17  39566.0     0.0  14340.0  53906.0
977  2022/9/18      0.0     0.0      0.0      0.0
978  2022/9/19      0.0     0.0      0.0      0.0

刪除欄位

如果你有不想要的欄位當然可以刪除掉,使用drop(["欄位名稱"], axis=1),axis=1為欄,axis=0則代表列。

import pandas as pd

df = pd.read_csv("covid19_tw_specimen.csv", encoding = "utf-8")
dfNew = df.drop(["Total"], axis=1)
print(df)
print("-"*30)
print(dfNew)

下面是刪除前和刪除後的對比~

           通報日  法定傳染病通報  居家檢疫送驗   擴大監測送驗    Total
0    2020/1/15      0.0     0.0      0.0      0.0
1    2020/1/16      4.0     0.0      0.0      4.0
2    2020/1/17      0.0     0.0      0.0      0.0
3    2020/1/18      1.0     0.0      0.0      1.0
4    2020/1/19      1.0     0.0      0.0      1.0
..         ...      ...     ...      ...      ...
974  2022/9/15  41675.0     0.0  18047.0  59722.0
975  2022/9/16  39656.0     0.0  16634.0  56290.0
976  2022/9/17  39566.0     0.0  14340.0  53906.0
977  2022/9/18      0.0     0.0      0.0      0.0
978  2022/9/19      0.0     0.0      0.0      0.0

[979 rows x 5 columns]
------------------------------
           通報日  法定傳染病通報  居家檢疫送驗   擴大監測送驗
0    2020/1/15      0.0     0.0      0.0
1    2020/1/16      4.0     0.0      0.0
2    2020/1/17      0.0     0.0      0.0
3    2020/1/18      1.0     0.0      0.0
4    2020/1/19      1.0     0.0      0.0
..         ...      ...     ...      ...
974  2022/9/15  41675.0     0.0  18047.0
975  2022/9/16  39656.0     0.0  16634.0
976  2022/9/17  39566.0     0.0  14340.0
977  2022/9/18      0.0     0.0      0.0
978  2022/9/19      0.0     0.0      0.0

[979 rows x 4 columns]

好了今天就先到這邊,明天再來做一題練習~


上一篇
[Day25] Pandas基本使用
下一篇
[Day27] 爬蟲實戰演練 - 奇摩電影2.0
系列文
30天帶你從零基礎到Python爬蟲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言